//
//  FourTTViewController.swift
//  swiftTS
//
//  Created by 航电 on 2020/3/5.
//  Copyright © 2020 航电. All rights reserved.
//

import UIKit

class FourTTViewController: UIViewController {

    let leftTBWidth = 120;
    var lastOffSetY:CGFloat = 0;
    var isScrollDown = true;
    lazy var leftTableView:UITableView = {
        let tbView = UITableView(frame: CGRect(x: 0, y: 0, width: leftTBWidth, height: Int(screenMainSize.height)), style: UITableView.Style.plain);
        tbView.backgroundColor = UIColor.red.withAlphaComponent(0.75);
        tbView.delegate = self;
        tbView.dataSource = self;
        tbView.separatorStyle = .none;
        return tbView;
    }();
    
    lazy var rightTableView:UITableView = {
        let tbView = UITableView(frame: CGRect(x: leftTBWidth, y: 0, width: Int(screenMainSize.width)-leftTBWidth, height: Int(screenMainSize.height)), style: UITableView.Style.grouped);
        tbView.backgroundColor = UIColor.lightGray.withAlphaComponent(0.75);
        tbView.delegate = self;
        tbView.dataSource = self;
        return tbView;
    }();
    
    lazy var dataArray:NSMutableArray = {
        var dataArr = NSMutableArray();
        
        let filePath = Bundle.main.path(forResource: "Four", ofType: "plist");
        let fileArr = NSArray(contentsOfFile: filePath ?? "");
        dataArr.addObjects(from: fileArr as! [Any]);
        
        return dataArr;
    }();
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        self.title = "tableView和tableView联动";
        // Do any additional setup after loading the view.
        self.onCreateUIForView();
        
        self.onRequestData();
    }

    //TODO:UI
    func onCreateUIForView() {
        self.view.backgroundColor = .white;
        
        self.view.addSubview(self.leftTableView);
        self.view.addSubview(self.rightTableView);
    }
    
    //TODO:Actions
    func onRequestData() {
        
    }

    func onSelectTableRow(index:Int) {
        self.leftTableView.selectRow(at: NSIndexPath(row: index, section: 0) as IndexPath, animated: true, scrollPosition: .top);
    }
}

extension FourTTViewController:UITableViewDelegate,UITableViewDataSource {
    func numberOfSections(in tableView: UITableView) -> Int {
        if tableView == self.leftTableView {
            return 1;
        }
        else if tableView == self.rightTableView {
            return self.dataArray.count;
        }
        return 1;
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        if tableView == self.leftTableView {
            return self.dataArray.count;
        }
        else if tableView == self.rightTableView {
            if self.dataArray.count > section {
                let dic:Dictionary<String,AnyObject> = self.dataArray.object(at: section) as! Dictionary ;
                let valueData:[String] = dic["data"] as! [String];
                return valueData.count;
            }
            return 0;
        }
        return 0;
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if tableView == self.leftTableView {
            let cellId = "four_tt_left_cell";
            var cell = tableView.dequeueReusableCell(withIdentifier: cellId);
            if cell == nil {
                cell = UITableViewCell(style: .default, reuseIdentifier: cellId);
                cell?.backgroundColor = .clear;
            }
            
            if self.dataArray.count > indexPath.row {
                let dic:Dictionary<String,AnyObject> = self.dataArray.object(at: indexPath.row) as! Dictionary;
                cell?.textLabel?.text = (dic["name"] as! String);
            }
            
            return cell!;
        }
        else if tableView == self.rightTableView {
            let cellId = "four_tt_left_cell";
            var cell = tableView.dequeueReusableCell(withIdentifier: cellId);
            if cell == nil {
                cell = UITableViewCell(style: .default, reuseIdentifier: cellId);
            }
            
            if self.dataArray.count > indexPath.section {
                let dic:Dictionary<String,AnyObject> = self.dataArray.object(at: indexPath.section) as! Dictionary;
                let valueData:[String] = dic["data"] as! [String];
                if valueData.count > indexPath.row {
                    cell?.textLabel?.text = valueData[indexPath.row];
                }
            }
            
            return cell!;
        }
        return UITableViewCell();
    }
    
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        if tableView == self.leftTableView {
            return 80;
        }
        else if tableView == self.rightTableView {
            return 60;
        }
        return 0;
    }
    
    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        if tableView == self.leftTableView {
            return nil;
        }
        
        let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.width, height: 40));
        
        let dic:Dictionary<String,AnyObject> = self.dataArray.object(at: section) as! Dictionary;
        
        let tlLb = UILabel(frame: headerView.bounds);
        tlLb.backgroundColor = .purple;
        tlLb.textColor = .green;
        tlLb.textAlignment = .center;
        tlLb.text = (dic["name"] as! String);
        headerView.addSubview(tlLb);
        
        return headerView;
    }
    
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        if tableView == self.leftTableView {
            return 0;
        }
        return 40;
    }
    
    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return 0;
    }
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if tableView == self.leftTableView {
            self.rightTableView.scrollToRow(at: NSIndexPath(row: 0, section: indexPath.row) as IndexPath, at: .top, animated: true);
        }
    }
    
//    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
//        //判断是右侧表，而且还是拖拽
//        if tableView == self.rightTableView && self.rightTableView.isDragging {
//            self.onSelectTableRow(index: indexPath.section);
//        }
//    }
    
    func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
        //判断是右侧表，而且还是拖拽,滚动的方向在表头刚开始显示的时候向上
        if tableView == self.rightTableView && self.rightTableView.isDragging && !self.isScrollDown {
            self.onSelectTableRow(index: section);
        }
    }
    
    func tableView(_ tableView: UITableView, didEndDisplayingHeaderView view: UIView, forSection section: Int) {
        //判断是右侧表，而且还是拖拽,滚动的方向在表头刚开始显示的时候向下
        if tableView == self.rightTableView && self.rightTableView.isDragging && self.isScrollDown {
            self.onSelectTableRow(index: section+1);
        }
    }
    
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let tableView = scrollView as! UITableView;
        if tableView == self.rightTableView {
            isScrollDown = lastOffSetY < scrollView.contentOffset.y;
            lastOffSetY = scrollView.contentOffset.y;
        }
    }
}
